package com.tale.competition.common.util;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

@Component
public class JedisUtil {

    /**
     * 这里不能使用Autowired   https://blog.csdn.net/zhaoheng314/article/details/81564166
     * @Autowired 默认按照类型装配的
     * @Resource 默认根据名称装配
     * 在实际开发过程中，使用RedisTemplate< K, V>不是必须指定K、V的类型，使用默认的Bean就能满足需求。
     */
    @Resource
    private  RedisTemplate<String, Object> redisTemplate;

//    public JedistUtil(RedisTemplate<String, Object> redisTemplate) {
//        this.redisTemplate = redisTemplate;
//    }


    /**
     * 普通缓存放入并设置时间
     * @param key 键
     * @param value 值
     * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
     * @return true成功 false 失败
     */
    public boolean setToken(String key, Object value, int time){
        try {
            if(time > 0){
                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
            }
            /*else{
                set(key, value);
            }*/
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * String 通过key获取值
     * @param key
     * @return
     */
    public  String getToken(String key){
        try {
            return (String) redisTemplate.opsForValue().get(key);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}
